A cluster is a set of application server instances, running on independent servers, configured to act in concert to deliver greater scalability and availability than a single instance can provide. While a single application server instance can only leverage operating resources of a single host, a cluster can span multiple hosts, distributing application execution over a greater number of CPUs. While a single application server instance is vulnerable to the failure of its host and operating system, a cluster can continue to function despite the loss of an operating system or host, hiding any such failure from clients.
In enterprise applications that are clustered, servers are configured to multicast states (sessions) for in-memory replication. This ensures that when one server goes down, the clients will immediately redirect to the server that has backedup all the other states. Hence the transactions are continued without interruption.
In prior systems, in-memory replication was performed by replicating entire states and objects from one server to another. In the case of Enterprise Java Beans (EJB) end-of-call replication configuration, each time an object is changed, its entire content is broadcasted to the network via multicast and is replicated by another server. While this may not cause problems on small object replications, it may cause network congestion for applications where the objects are large. Network traffic may be further increased due to the tendency of the multicast protocol to drop messages. When messages are dropped, they would need to be resent, further increasing access latency. Thus, as the amount of transmitted data increases, the probability of dropped messages increases causing additional re-transmission of data.
The present invention provides a new and useful method and system of object replication that addresses the above problems.